package com.tedu.api.io;

import java.io.Serializable;
import java.util.Arrays;

/**
 * 流---专门传输   对象    xxx.java文件
 * ObjectOutputStream  对象输出流
 * ObjectInputStream   对象输入流
 * <p>
 * 以上两个流专门传输：对象功能
 * Person.java文件---先做对象传输处理
 * 步骤：1.对象实现接口-->Serializable  序列化接口【对象转换为二进制】
 * 2.设置版本号:按照正确的方式将对象转换为二进制，二进制可以转换为对象
 */
public class Person implements Serializable {
    /**
     * 版本号：决定类反序列化成功的唯一标识。版本号固定写法：静态不可改变值保存
     * 用法：一但修改类，重新生产一个版本号，建议写定一个版本号 ，，抛出异常
     * 类结构发生变化，类实现序列化接口，自动存在静态不可改变值保存
     * 类---版本更新---版本号确定更新的版本!
     */
    //版本号:建议
    private static final long serialVersionUID = 1L;
    /**
     * transient关键字---程序瘦身
     * 作用：只出现序列化接口中我，如果对象中很多属性或者很多方法，每个属性
     * 每个方法一旦序列化，把每一组数据/方法--转换为二进制，浪费资源
     * 利用transient对象在序列化过程中，指定属性/方法不转换成字节
     */
    //私有属性
    private String names;
    private String[] say;

    //属性transient 修饰--不会转换成二进制

    public Person() {
    }

    public Person(String names, String[] say) {
        this.names = names;
        this.say = say;
    }

    public String getNames() {
        return names;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String[] getSay() {
        return say;
    }

    public void setSay(String[] say) {
        this.say = say;
    }

    @Override
    public String toString() {
        return "Person{" +
                "names='" + names + '\'' +
                ", say=" + Arrays.toString(say) +
                '}';
    }
}
